1. Technical Field
The present invention is directed generally toward a method and apparatus for servicing software, and particularly toward estimating software maintenance schedules.
2. Description of the Related Art
Regression testing is the process of selective retesting of a software system that has been modified to ensure that any defects have been fixed and that no other previously working functions have failed as a result of the fixes implemented. Some current regression testing is done in two phases—pre-release phase and legacy release phase. The pre-release phase (a separate test group) addresses the “dead on arrival” and functional issues of the builds by performing BST (basic stability test) and NFT (minimal functionality test) testing. The pre-release testing process for controller firmware has pre-defined test processes that do not change from build to build. Thus, once the build is available then the pre-release schedule is relatively fixed. The set of tests are pre-defined for each type of build and does not change from build to build testing.
The legacy release phase is typically done by a separate test group. The test process is based on executing a set of tests that varies in number depending on the number of fixes, types of module(s) affected by the defect, and severity class of the defects fixed in the build. Thus, the test cycle time varies from build to build. However, it would be advantageous to know, in order to prioritize legacy team resources, how long it would take for a build to pass through the release cycle. Further, since newly released software may not have historic data from which to draw, it would be advantageous to have an estimate of required testing time for a build based on data gathered from similar products and based on the number of problem reports received.